	/**
	 * @overview 矩形组件抽象类。
	 * @component#iChart.Rectangle
	 * @extend#iChart.Component
	 */
	iChart.Rectangle = iChart.extend(iChart.Component,{
		configure:function(){
			/**
			 * invoked the super class's  configuration
			 */
			iChart.Rectangle.superclass.configure.apply(this,arguments);
			
			/**
			 * indicate the component's type
			 */
			this.type = 'rectangle';
			
			this.set({
				/**
				 * @cfg {Number} 矩形的宽度。单位px。一般都图表给出。(默认为0)
				 */
				width:0,
				/**
				 * @cfg {Number} 矩形的高度。单位px。一般都图表给出。(默认为0)
				 */
				height:0,
				/**
				 * @cfg {Number} 若显示值文本(标签)，指定文本与矩形边缘的距离。单位px。(默认为4)
				 */
				value_space:4,
				/**
				 * @cfg {String} 矩形的值，一般都图表给出。(默认为'')
				 */
				value:'',
				/**
				 * @cfg {String} 矩形的名称，一般都图表给出。(默认为'')
				 */
				name:'',
				/**
				 * @cfg {String} 提示框的对齐方式。
				 * 可选值：
				 * @Option 'left'
				 * @Option 'right'
				 * @Option 'top'
				 * @Option 'bottom'
				 */
				tipAlign:'top',
				/**
				 * @cfg {String} 值文本(标签)的对齐方式。
				 * 可选值：
				 * @Option 'left'
				 * @Option 'right'
				 * @Option 'top'
				 * @Option 'bottom'
				 */
				valueAlign:'top',
				/**
				 * @cfg {Number} 覆盖默认值，设置为3
				 */
				shadow_blur:3,
				/**
				 * @cfg {Number} 覆盖默认值，设置为-1
				 */
				shadow_offsety:-1,
				/**
				 @cfg {<link>iChart.Text</link>} 标签的配置项。(默认为空对象)
				 * 注意:禁用标签，则需设置为false即可。
				 */
				label : {}
			});
			
			/**
			 * this element support boxMode
			 */
			this.atomic = true;
			
			this.registerEvent(
					/**
					 * @event 解析标签数据项时触发。返回值将覆盖当前值。
					 * @paramter <link>iChart.Rectangle#rect</link> 矩形对象
					 * @paramter string#text 当前文本
					 */
					'parseText');
			
		},
		doDraw:function(opts){
			this.drawRectangle();
			this.drawValue();
		},
		doConfig:function(){
			iChart.Rectangle.superclass.doConfig.call(this);
			iChart.Assert.gtZero(this.get('width'),'width');
			this.width = this.get('width');
			this.height = this.get('height');
			
			this.centerX = this.x + this.width/2;
			this.centerY = this.y + this.height/2;
			
			if(this.get('tip.enable')){
				if(this.get('tip.showType')!='follow'){
					this.push('tip.invokeOffsetDynamic',false);
				}
				this.tip = new iChart.Tip(this.get('tip'),this);
			}
			
			this.variable.event.highlight = false;
			
			this.on('mouseover',function(e){
				//console.time('mouseover');
				this.variable.event.highlight = true;
				this.redraw();
				this.variable.event.highlight = false;
				//console.timeEnd('mouseover');
			}).on('mouseout',function(e){
				//console.time('mouseout');
				this.variable.event.highlight = false;
				this.redraw();
				//console.timeEnd('mouseout');
			});
			
			this.on('beforedraw',function(){
				this.push('fill_color',this.variable.event.highlight?this.get('light_color'):this.get('background_color'));
				return true;
			});
		}
});//@end